﻿// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
//
// 本项目主要遵循 MIT 许可证和 Apache 许可证（版本 2.0）进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。
//
// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动！任何基于本项目二次开发而产生的一切法律纠纷和责任，我们不承担任何责任！

using Newtonsoft.Json;

namespace Sinc.ERP.Application.Service.ChineMobile;
internal class CardInformationResponse : BaseResponse<CardInformationResult>
{
    public override bool IsError()
    {
        return base.IsError() || this.Result?.Body?.CurrentStatusCode != "I";
    }

    public override string GetErrorMessage()
    {
        if (base.IsError())
            return base.GetErrorMessage();

        switch (this.Result?.Body?.CurrentStatusCode)
        {
            case "A":
                return $"该卡已经激活过,状态码A,电话号码:{this.Result?.Body?.MSISDN}";
        }
        return base.GetErrorMessage();
    }
}

internal class CardInformationResult : BaseResult
{
    [JsonProperty("resultBody")]
    public CardInformationData Body { get; set; }
}

internal class CardInformationData
{
    [JsonProperty("cardTypeName")]
    public string TypeName { get; set; }

    [JsonProperty("mappedStatusCode")]
    public string MappedStatusCode { get; set; }

    [JsonProperty("imsi")]
    public string IMSI { get; set; }

    [JsonProperty("adminFee")]
    public string AdminFee { get; set; }

    [JsonProperty("billEndDate")]
    public string BillEndDate { get; set; }

    [JsonProperty("cardExpiryDate")]
    public string CardExpiryDate { get; set; }

    [JsonProperty("managementStatusCode")]
    public string ManagementStatusCode { get; set; }

    [JsonProperty("iccid")]
    public string ICCID { get; set; }

    [JsonProperty("billStartDate")]
    public string BillStartDate { get; set; }

    /// <summary>
    /// I：idle(mark-sold) 可用
    /// A：active    已经被激活过
    /// </summary>
    [JsonProperty("currentStatusCode")]
    public string CurrentStatusCode { get; set; }

    [JsonProperty("firstActivationDate")]
    public string FirstActivationDate { get; set; }

    [JsonProperty("msisdn")]
    public string MSISDN { get; set; }

    [JsonProperty("currentStatus")]
    public string CurrentStatus { get; set; }

    [JsonProperty("managementStatus")]
    public string ManagementStatus { get; set; }

    [JsonProperty("subscriberId")]
    public string SubscriberId { get; set; }

    [JsonProperty("mappedStatusName")]
    public string MappedStatusName { get; set; }

    [JsonProperty("cMN1Number")]
    public string CMN1Number { get; set; }

    [JsonProperty("mdn")]
    public string MDN { get; set; }

    [JsonProperty("cardTypeCode")]
    public string TypeCode { get; set; }

    [JsonProperty("lifeCycleStatus")]
    public string LifeCycleStatus { get; set; }

    /// <summary>
    /// I：idle(mark-sold)
    /// </summary>
    [JsonProperty("status")]
    public string Status { get; set; }
}